feat(swift-ios): choose the reasoning level from the composer - #7344
feat(swift-ios): choose the reasoning level from the composer#7344saphid wants to merge 9 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Your free Security trial is over. An organization admin can activate Security or dismiss this notice. Comment |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — The PR introduces a new descriptor-backed traits picker in the iOS composer and changes which model-option values can be selected and sent on existing message flows. Its scope is contained, but the new production workflow and cross-layer selection behavior warrant human review. You can add or adjust custom eligibility rules. Learn more. |
1f39d72 to
fce7740
Compare
8415ea9 to
d3c5630
Compare
|
Need this updated and also screenshots/vids |
d3c5630 to
6cf8887
Compare
|
@t3dotgg Updated: the branch is now on the current |
The composer's reasoning level was read-only, so changing it meant opening the model picker and reconfiguring the model. Make it an inline selector instead. The levels are read from the selected model's own option descriptor, so the client never assumes which levels a provider exposes, and choosing one writes the same selection shape the model picker's configuration screen writes through the composer's existing selection binding. Descriptors that are not a choice list, and values the model does not offer, keep the previous read-only and hidden behavior.
On-device review of the selector asked for two changes. The two prompt-tier "ultra" levels are not wanted in the composer, so the control excludes exactly the `ultracode` and `ultrathink` choice ids and documents that as the single product rule in an otherwise descriptor-driven control. A level excluded here is still displayed while it is the effective one, so the composer keeps telling the truth about a setting made elsewhere, but it is never offered or checked. The composer sits at the bottom of the screen, where an adaptive menu flips its contents and puts the highest level nearest the finger. Pin the menu to the descriptor's declared order so the lowest level reads first.
6cf8887 to
b849a88
Compare
|
@t3dotgg Updated again: I rebased the branch onto the current |
…bile-app-swift' into feat/issue110-reasoning-selector
|
@t3dotgg Updated against the live SwiftUI target and refreshed the requested proof.
The prior |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 46b2288. Configure here.
|
@t3dotgg Updated to the superseding acceptance target at exact head The SwiftUI composer now renders every supported model-option descriptor section in descriptor order. The Codex proof shows Reasoning followed by Service Tier, Focused verification: 32 tests passed, 0 failed; Dark mode — exact base → exact head
Interaction proof
Clean playable video: https://github.com/user-attachments/assets/b17c2f48-294f-46da-ad87-9da57ba01e12 Annotated playable video: https://github.com/user-attachments/assets/22c313e1-94a5-400c-b124-4b6dedb07d49 Light mode — exact base → exact head
The raw exact-head interaction capture is 76.758 seconds (SHA-256 Direct Claude Opus high review was attempted read-only on the frozen change, but the process exited 1 with HTTP 429 and zero model usage; no Claude model participated and cross-provider review was skipped because capacity was exhausted. |
GIF crop correctionThe three earlier GIFs were cropped too tightly and hid most of the descriptor menu. I replaced their live PR-body embeds without changing the PR head.
Dark comparisonInteractionCrop decision · dark receipt · light receipt · interaction receipt |
|
Current status: do not merge yet. Theo's SwiftUI target advanced to |
Upstream successor handoff — #110 / SwiftUI Test Build 86This records the contribution state only. The coordinator-owned phone acceptance remains on saphid/t3code-personal#110: Alex’s recorded verdict was “Reasoning menu looks good.” I did not create or alter that acceptance.
GitHub currently reports No product commit, push, rebase, proof mutation, media upload, or PR-body change was made during this handoff; the accepted candidate was preserved exactly. |











Important
Current delivery status: blocked. Theo's SwiftUI target advanced to
c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0with overlapping model-option work after this PR's proof and checks were captured. The head remains textually mergeable, but the existing CI, tests, and media are bound to the earlier target and must not be treated as exact-live-base validation.Upstream delivery
Delivery: blocked
Validated against Theo commit:
c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0Depends on: none
Merge order: this PR only, after refreshed live-base validation
Validation status: current head
2524de5c55914a9364c56f1dcff7c5953b74ea98has green required CI and successful CodeRabbit, Cursor Bugbot, and Macroscope correctness reviews with no unresolved threads. A merge-tree simulation against the live target exited 0, but Theo's new picker-level model options overlap this composer-level trait UI semantically. Focused native tests, Simulator proof, and AI review must be repeated on the integrated result before human merge review.Dark mode evidence: yes
Clean screenshot: https://github.com/user-attachments/assets/eee3fbae-456d-4253-a8af-0ff45b7ee377
Annotated screenshot: https://raw.githubusercontent.com/saphid/t3code/6dcfcf115e9cea4ac2aee0464bc89c23db520f6f/proof/pr-7344/2524de5c/traits-interaction.gif
Clean video: https://github.com/user-attachments/assets/b17c2f48-294f-46da-ad87-9da57ba01e12
Annotated video: https://github.com/user-attachments/assets/22c313e1-94a5-400c-b124-4b6dedb07d49
Problem
The native SwiftUI composer exposed only Codex reasoning, while the Electron composer renders the selected model's full option-descriptor catalog. That left Service Tier unavailable and made the native behavior diverge as providers and models changed.
Change
For the live Codex descriptor, the menu shows Reasoning followed by Service Tier, with Standard marked Default. The backend currently supplies Fast's description as
1.5x speed, increased usagewithout terminal punctuation; SwiftUI renders descriptor text verbatim. The focused fixture also covers the supplied punctuated form.Verification
b67837984e5650888b1eed0e1cd7fff83625f6962524de5c55914a9364c56f1dcff7c5953b74ea98MERGEABLE/CLEANwith no conflicts.swiftc -parsepassed.git diff --checkpassed.46b2288and2524de5.Exact-head proof
Built and installed only on the leased canonical proof simulator from exact head. Installed executable SHA-256:
c68c7d9d1ba53b96fa54347f29d84db26765b95e00e9bfb5dcaca3c3a1e5b2d9. Exact-base executable SHA-256:0ea482ec8e37519c86fa5529ac541b605e9e01f286e336039ec0ebf3ef971cf2.Dark mode — exact base → exact head
Interaction
Light mode — exact base → exact head
Raw interaction capture: 76.758 seconds, SHA-256
1f14953d7c351a31498a776a9daef347a058258af7b3eed27dfb234a4a1fdbf4. Complete timeline validation passed all 5 declared actions. Every published attachment is anonymously readable; both MP4s returnvideo/mp4, nonzero full bodies, and206byte ranges. The clean video rendered successfully in the shared browser.Owning lane issue: saphid/t3code-personal#110.
Built with GPT-5.6 Sol via Codex in T3 Code.